Page({
  data: {
    //原始底部导航栏数据
    // activeTab: 'home',
    currentSwiperIndex: 0,
    isEmergency: false, // SOS状态标志位，默认为非紧急状态
    showSubscribeModal: false, // 是否显示订阅消息授权弹窗
    banners: [
      { id: 1, image: '/images/img1.jpg' },
      { id: 2, image: '/images/img2.jpg' },
      { id: 3, image: '/images/img3.jpg' },
      { id: 4, image: '/images/img4.jpg' }
    ],
    taskItems: [
      { id: 'newTask', name: '新增任务', icon: '📋', url: '../tasks/familylist/familylist' },
      { id: 'volunteer', name: '志愿者', icon: '❤️', url: '../volunteers/volunteers' },
      { id: 'visitService', name: '探访服务', icon: '🕒', url: '../visit/visit' },
      { id: 'activity', name: '活动', icon: '🎯', url: '../activity/activity' },
      { id: 'resourceManagement', name: '资源管理', icon: '📁', url: '../resourceManage/resourceManage_' },
      //以下任务待开发
      { id: 'overdueTask', name: '逾期任务', icon: '📆', url: '../tasks/overdue' },
      { id: 'tasklist', name: '任务列表', icon: '📅', url: '/pages/tasks/tasklist/tasklist' },
      { id: 'incompleteTask', name: '未完成任务', icon: '📝', url: '../tasks/incomplete' },
      { id: 'orderManagement', name: '派单管理', icon: '✈️', url: '../orders/index' },
      { id: 'followUpVisit', name: '追踪回访', icon: '📞', url: '../followup/index' }
    ],
    // 轮播图指示器数据
    indicatorDots: true,
    currentDot: 0
  },

  // 处理SOS按钮点击事件
  handleSOSToggle: function() {
    const newState = !this.data.isEmergency;
    
    this.setData({
      isEmergency: newState
    });
    
    // if (newState) {
    //   // 紧急状态激活
    //   this.activateEmergency();
    //   wx.showToast({
    //     title: '紧急求助已发送',
    //     icon: 'none',
    //     duration: 2000
    //   });
    // } else {
    //   // 解除紧急状态
    //   this.deactivateEmergency();
    //   wx.showToast({
    //     title: '紧急求助已解除',
    //     icon: 'none',
    //     duration: 2000
    //   });
    // }
  },
  
  // 激活紧急模式
  activateEmergency: function() {
    // 获取用户位置
    wx.getLocation({
      type: 'gcj02',
      success: res => {
        // 发送订阅消息给用户自己
        this.sendUserNotification({
          latitude: res.latitude,
          longitude: res.longitude
        });
      },
      fail: err => {
        console.error('获取位置失败:', err);
        // 即使获取位置失败，也尝试发送通知
        this.sendUserNotification();
      }
    });
    
    // 本地震动提醒
    wx.vibrateShort({
      type: 'heavy'
    });
  },
  
  // 向用户发送微信订阅消息通知
  sendUserNotification: function(locationInfo) {
    // 判断用户是否授权接收订阅消息
    this.checkSubscriptionPermission().then(hasPermission => {
      if (hasPermission) {
        // 用户已授权，直接发送
        this.callSendMessageAPI(locationInfo);
      } else {
        // 未授权，显示订阅授权弹窗
        this.setData({
          showSubscribeModal: true
        });
      }
    });
  },
  
  // 显示订阅弹窗
  showSubscriptionModal: function() {
    this.setData({
      showSubscribeModal: true
    });
  },
  
  // 取消订阅
  cancelSubscription: function() {
    this.setData({
      showSubscribeModal: false
    });
    
    // 用户拒绝授权，使用备用方式通知
    this.fallbackNotification();
  },
  
  // 确认订阅
  confirmSubscription: function() {
    this.setData({
      showSubscribeModal: false
    });
    
    // 请求订阅消息授权
    this.requestSubscriptionPermission().then(granted => {
      if (granted) {
        wx.getLocation({
          type: 'gcj02',
          success: res => {
            this.callSendMessageAPI({
              latitude: res.latitude,
              longitude: res.longitude
            });
          },
          fail: () => {
            this.callSendMessageAPI();
          }
        });
      } else {
        this.fallbackNotification();
      }
    });
  },
  
  // 检查用户是否已授权接收订阅消息
  checkSubscriptionPermission: function() {
    return new Promise(resolve => {
      // 从本地存储中读取授权状态
      const permissionStatus = wx.getStorageSync('subscriptionPermission');
      if (permissionStatus) {
        resolve(true);
      } else {
        resolve(false);
      }
    });
  },
  
  // 请求订阅消息授权
  requestSubscriptionPermission: function() {
    return new Promise(resolve => {
      // templateId需要在微信公众平台申请
      const templateId = 'YOUR_TEMPLATE_ID'; // 替换为实际的模板ID
      
      wx.requestSubscribeMessage({
        tmplIds: [templateId],
        success: res => {
          if (res[templateId] === 'accept') {
            // 用户同意授权
            wx.setStorageSync('subscriptionPermission', true);
            resolve(true);
          } else {
            // 用户拒绝授权
            resolve(false);
          }
        },
        fail: err => {
          console.error('请求订阅消息授权失败:', err);
          resolve(false);
        }
      });
    });
  },
  
  // 调用发送消息API
  callSendMessageAPI: function(locationInfo) {
    const currentTime = new Date().toLocaleString();
    
    // 构建通知内容
    const notificationData = {
      // 下面的字段需要根据实际申请的模板进行调整
      thing1: {
        value: '紧急状态已激活'
      },
      time2: {
        value: currentTime
      },
      thing3: {
        value: locationInfo ? '已获取您的位置信息' : '未能获取位置信息'
      },
      thing4: {
        value: '请保持手机畅通，等待救援'
      }
    };
    
    // 调用云函数发送订阅消息
    wx.cloud.callFunction({
      name: 'sendSubscribeMessage',
      data: {
        templateId: 'YOUR_TEMPLATE_ID', // 替换为实际的模板ID
        data: notificationData,
        locationInfo: locationInfo
      },
      success: res => {
        console.log('发送通知成功:', res);
      },
      fail: err => {
        console.error('发送通知失败:', err);
        // 发送失败时，尝试使用其他方式通知用户
        this.fallbackNotification();
      }
    });
  },
  
  // 备用通知方式（当订阅消息发送失败时）
  fallbackNotification: function() {
    // 使用普通的微信toast通知
    wx.showToast({
      title: '紧急状态已激活，但通知发送失败',
      icon: 'none',
      duration: 3000
    });
    
    // 或者使用微信模态弹窗
    wx.showModal({
      title: '紧急状态已激活',
      content: '系统已记录您的紧急求助，但通知发送失败。请保持手机畅通，等待救援。',
      showCancel: false
    });
  },
  
  // 解除紧急模式
  deactivateEmergency: function() {
    // 向用户发送解除紧急状态的通知
    this.sendCancelNotification();
    
    console.log('紧急模式已解除');
  },
  
  // 发送解除紧急状态的通知
  sendCancelNotification: function() {
    const currentTime = new Date().toLocaleString();
    
    // 构建取消通知内容
    const cancelData = {
      // 下面的字段需要根据实际申请的模板进行调整
      thing1: {
        value: '紧急状态已解除'
      },
      time2: {
        value: currentTime
      },
      thing3: {
        value: '您的紧急求助已取消'
      },
      thing4: {
        value: '如有需要可再次激活'
      }
    };
    
    // 调用云函数发送解除通知
    wx.cloud.callFunction({
      name: 'sendSubscribeMessage',
      data: {
        templateId: 'YOUR_CANCEL_TEMPLATE_ID', // 替换为实际的模板ID
        data: cancelData
      },
      success: res => {
        console.log('发送解除通知成功:', res);
      },
      fail: err => {
        console.error('发送解除通知失败:', err);
      }
    });
  },

  onLoad: function() {
    // 初始化云开发环境
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
    } else {
      wx.cloud.init({
        env: 'your-env-id', // 请替换为你的云开发环境ID
        traceUser: true,
      });
    }
    
    // 初始化加载逻辑
    this.getBackgroundImage();
    
    // 检查是否有待办任务
    this.checkPendingTasks();
  },
  
  onShow: function() {
    // 每次页面显示时更新任务数据
    this.updateTaskData();
  },
  
  // 获取背景图片
  getBackgroundImage: function() {
    // 这里可以从服务器获取背景图片，现在使用本地图片
    // 实际项目中可能需要从服务器动态获取
    console.log('加载背景图片');
  },
  
  // 检查待办任务
  checkPendingTasks: function() {
    // 检查是否有待办任务，可以从服务器获取数据
    console.log('检查待办任务');
  },
  
  // 更新任务数据
  updateTaskData: function() {
    // 从服务器获取最新任务数据
    console.log('更新任务数据');
  },
  
  // 轮播图切换事件
  swiperChange: function(e) {
    this.setData({
      currentSwiperIndex: e.detail.current
    });
  },
  
  // 点击轮播图
  tapBanner: function(e) {
    const bannerId = e.currentTarget.dataset.id;
    console.log('点击了轮播图', bannerId);
    // 可以根据bannerId跳转到不同的页面或执行不同的操作
  },
  
  // 导航到任务页面
  navigateToTask: function(e) {
    const taskId = e.currentTarget.dataset.task;
    const taskItem = this.data.taskItems.find(item => item.id === taskId);
    
    if (taskItem) {
      wx.navigateTo({
        url: taskItem.url,
        success: function() {
          console.log('导航到:', taskItem.name);
        },
        fail: function(err) {
          console.error('导航失败:', err);
          wx.showToast({
            title: '该功能正在开发中',
            icon: 'none',
            duration: 2000
          });
        }
      });
    }
  },
  
  // 分享功能
  onShareAppMessage: function() {
    return {
      title: '工作任务管理小程序',
      path: '/pages/index/index',
      imageUrl: '/images/share.jpg'
    };
  }
})
